\chapter{Introduction to SteamCAD}\label{chap:intro}
\special{pdf: out 1 << /Title (\thechapter. Introduction to SteamCAD) /Dest [ @thispage /FitH @ypos ] >>}

SteamCAD is a 2D drawing tool especially designed to create drawings of
steam locomotives as you can see on the next page\footnote{This drawing presents the
Austrian steam locomotive class 6 kkStB. This type was build in several Austrian
factories from 1894 to 1898. The image is based on the factory's drawing and is at
exact scale 1:87 (known as H0 scale).}. First of all, why is it called SteamCAD?
There are basically two reasons for this name. One was already mentioned - the tool is
specially designed for drawing steam engines. But there is another meaning, it should
emphasize that the software is very lightweight. The user interface is minimalistic,
the application window has a menu bar and a status bar only. There are no toolbars with
thousands of buttons and functions. The main aim when designing SteamCAD was that the
application contains as few tools, as few controls, as possible. All the functionality
is accessible from the menu, and each command has a shotcut, so that it is possible to
work with the application just using mouse and keyboard. For experienced user, almost
no interaction with the application GUI is required.

As a result, the drawing area is not obscured by controls and can occupy almost the whole
screen. This is what makes the SteamCAD different from any other CAD. SteamCAD is focused
on the productivity, not on the fancy look.

\section{History}
\special{pdf: out 2 << /Title (\thesection. History) /Dest [ @thispage /FitH @ypos ] >>}

SteamCAD is in many ways inspired by LibreCAD/QCAD. But it shares no code with it. I liked
some of the LibreCAD/QCAD ways how it does things, and I have also contributed small piece
of code to LibreCAD. But in the end I realized that DXF format, which LibreCAD adopted as
the native storage format, is the main blocker. So in the end I decided to create a completely
new software, taking the good things from LibreCAD and ommiting the bad things.

\pagestyle{empty}
\begin{center}
\vspace*{-2.2cm}
\hspace*{-0.7cm}
\makebox[\linewidth]
{
\includegraphics[angle=90,origin=c]{Images/264_0.eps}
}
\end{center}
\newpage

\pagestyle{headings}

\section{What is SteamCAD}
\special{pdf: out 2 << /Title (\thesection. What is SteamCAD) /Dest [ @thispage /FitH @ypos ] >>}

SteamCAD is an open source software for creating 2D technical drawings, especially designed to 
% \makebox[\linewidth][s]{produce vector drawings suitable for further publishing process. The
% software itself does not}
produce vector drawings suitable for further publishing process. The software itself does not
provide any printing capabilities. Its aim is solely to produce drawings in a format consumed
by other technologies, either desktop or web based.

The software features several advanced technologies, namely length and angular unit handling, both
for entering and for printing, and linear pattern conflict resolution. Both will be explained
later in more details.

The software is available in Linux and Windows version. Both versions use native Windows
management, and different technology for drawing backend. It uses Cairo on Linux and GDI on
Windows. Cairo as a drawing backend is very slow on Windows, so we were forced to use other
technology, thus the Windows experience is a little bit worse than the Linux's one. But the
software is primarily intended for Linux users.

The philosophy of SteamCAD is to follow the manual drawing and adding some advanced features
not available for hand drawing, such as mouse snapping tool.

\section{What is NOT SteamCAD}
\special{pdf: out 2 << /Title (\thesection. What is NOT SteamCAD) /Dest [ @thispage /FitH @ypos ] >>}

SteamCAD only allows drawing of black lines. It does not utilize colors at all. However, you can
use SteamCAD to quickly create exact 2D drawing and export the result into SVG format. Then
continue with coloring in another aplication such as Inkscape.

SteamCAD also does not define areas. It only draws line and curve segments. You can create a
hatch patter fill the same way you would do it in a hand drawing.

Finally SteamCAD only creates 2D drawings. It is not a 3D CAD.

\section{Installing SteamCAD}
\special{pdf: out 2 << /Title (\thesection. Installing SteamCAD) /Dest [ @thispage /FitH @ypos ] >>}

On a GNU Build system it is possible to install SteamCAD in a standard way:
\begin{verbatim}
$ sudo apt-get install gcc libcairo2-dev gtk+-dev
$ git clone https://github.com/oskardolch/SteamCAD.git
$ cd SteamCAD
$ ./configure
$ make
$ sudo make install
\end{verbatim}

SteamCAD then appears in the Applications > Graphics menu.

On a Windows system, the best is to download the zip with binaries for either 32bit or for 64bit
platform. Note that Windows XP and older systems are not supported by the provided build. If
you want to run it on an unsuported Windows system, you should compile it yourself.

There is no installation utility provided for MS Windows, just unzip the package into a directory
where you have write access to. So the best choise is somewhere under your documents folder.

\section{Building SteamCAD}
\special{pdf: out 2 << /Title (\thesection. Building SteamCAD) /Dest [ @thispage /FitH @ypos ] >>}

For a debuging purpose it is also possible to build SteamCAD bypassing the GNU build system.
You should install the follwoing dependencies first: gcc, cairo-dev and gtk+-dev.
Then download the source code and compile it from the console. Before you run
the application, copy the files DPapers.ini and DUnits.ini from the Papers folder into the
/home/<me>/.SteamCAD folder. The meaning of the ini files will be explained later.

The compilation steps and SteamCAD invocation on Debian based systems might look as the following:
\begin{verbatim}
$ sudo apt-get install gcc libcairo2-dev gtk+-dev
$ git clone https://github.com/oskardolch/SteamCAD.git
$ cd SteamCAD
$ mkdir Build
$ make -fmakefile.gcc libdxflib.a
$ make -fmakefile.gcc main
$ ./Build/SteamCAD
\end{verbatim}

Building of the software on MS Windows is not straightforward, since it involves building of
the cairo.dll.

\section{Prerequisities}
\special{pdf: out 2 << /Title (\thesection. Prerequisities) /Dest [ @thispage /FitH @ypos ] >>}

SteamCAD has minimal hardware requirements, you should be able to run it on almost every
computer. However, what you desperately need is a 3-button mouse with wheel. There is no way
to work with SteamCAD without such a device.

